; ****************************************************** ; ; ATTIVATORE COMANDANTO SEQUENZIALE A 3 CANALI ; CON AUTORESET TEMPORIZZATO ; ; DI MICHELE GUERRA - MG.TEMP@tiscali.it ; ; REVISIONE FIRMWARE: 20/03/2008 ; REVISIONE HARDWARE: 20/03/2008 ; ; HTTP://www.tattik.altervista.org - COPYRIGHT (c) 2008 ; ; ****************************************************** ; DIRETTIVE PER IL COMPILATORE PROCESSOR 12F629 RADIX DEC INCLUDE "P12F629.INC" __CONFIG 3F8CH ; COSTANTI TLAMPV EQU 80 ; 80*0.25 SEC = 20 SEC TEMPO RESET SEQUENZA E LAMP LED VERDE ; VARIABILI ORG 20H RIT RES 2 ; X ROUTINE RITARDO 260MSEC LAMPV RES 1 ; TIMER LAMPEGGIO LED VERDE NRELE RES 1 ; NR DEL RELE' DA ATTIVARE ; EQU BIT VARI ; PORTE DEL PIC LEDV EQU 0 ; LED VERDE OUT1 EQU 1 ; USCITA 1 OUT2 EQU 2 ; USCITA 2 SQUILL EQU 3 ; INGRESSO CONTA IMPULSI (INPUT) OUT3 EQU 4 ; USCITA 3 LEDR EQU 5 ; LED ROSSO ; VETTORI ORG 00H ; VETTORE RESET GOTO INIT ; INIZIALIZZAZIONE INIT BCF STATUS,RP0 ; BANCO 00 CLRF GPIO ; RESET I/O MOVLW 00000111 ; TUTTI GLI I/O SONO DIGITALI MOVWF CMCON BSF STATUS,RP0 ; BANCO 01 CALL 3FFH ; LEGGE IL VALORE DI CALIBRAZIONE MOVWF OSCCAL ; E LO SCRIVE NEL REGISTRO MOVLW 00001000B ; PORTE : GP3=INPUT MOVWF TRISIO MOVLW 00001111B ; PULLUP ON, PRESCALER A WDT 1:256 MOVWF OPTION_REG MOVLW 00000000B ; NO INTERRUPT MOVWF INTCON BCF STATUS,RP0 ; BANCO 00 CLRF GPIO ; RESET I/O ; MAIN MAIN BSF GPIO,LEDV ; ON LED 500 MSEC PER TEST BSF GPIO,LEDR CALL RIT260 CALL RIT260 CLRF GPIO CALL RIT260 ; GOTO MAIN CICLO CLRF LAMPV ; RESET TEMPO LAMPEGGIO LED VERDE MOVLW 1 ; E RESET RELE' MOVWF NRELE BSF GPIO,LEDV ; * LAMPEGGIO LED VERDE X FUNZIONAMENTO OK CIC2 CALL RIT260 BTFSC GPIO,LEDV ; EVITA OFF CONTINUO SU PORTA SE GIA' SPENTA BCF GPIO,LEDV ; - CLRWDT BTFSS GPIO,SQUILL ; CONTROLLA LA PRESENZA DI UN IMPULSO OGNI 260MSEC GOTO DRIN INCF LAMPV,1 MOVLW TLAMPV SUBWF LAMPV,W BTFSS STATUS,Z GOTO CIC2 GOTO CICLO DRIN BSF GPIO,LEDR ; LED ROSSO ON MOVLW 1 ; ATTIVA IL RELE' 1-3 A SECONDA DEL VALORE IN NRELE SUBWF NRELE,W ; ED INCREMENTA IL CONTATORE X RELE' SUCCESSIVO BTFSS STATUS,Z GOTO CHK2 BSF GPIO,OUT1 INCF NRELE,1 GOTO IMPULSO CHK2 MOVLW 2 SUBWF NRELE,W BTFSS STATUS,Z GOTO CHK3 BSF GPIO,OUT2 INCF NRELE,1 GOTO IMPULSO CHK3 MOVLW 1 MOVWF NRELE BSF GPIO,OUT3 IMPULSO CALL RIT260 ; ATTIVA PER 260MSEC E SPEGNE IL RELE' 1-3 ED IL LED ROSSO CLRF GPIO CLRF LAMPV ; RESET CONTATORE X EVITARE RESET DURANTE ATTIVAZIONE ; SEQUENZIALE RELE' FIMP CLRWDT BTFSS GPIO,SQUILL ; ASPETTA CHE FINISCA L'IMPULSO ATTUALE GOTO FIMP GOTO CIC2 ; *************************************************************** ; SUBROUTINE VARIE ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ROUTINE PAUSA ~262915USEC = ~.263 SEC RIT260 CLRF RIT CLRF RIT+1 LOOPRIT CLRWDT DECFSZ RIT,1 GOTO LOOPRIT DECFSZ RIT+1,1 GOTO LOOPRIT RETURN ; FINE PROGRAMMA END